--- import Layout from '../../layouts/Layout.astro'; import ProductCard from '../../components/ProductCard.astro'; import { getProductsFromDB, getPriceDropsFromDB } from '../../lib/products'; import type { Sneaker } from '../../data/mock'; // Type-only import, no runtime dependency const collectionMeta: Record = { 'sale': { title: 'Sale', description: 'De beste sneaker deals met meer dan 15% korting' }, 'trending': { title: 'Trending', description: 'De populairste sneakers van dit moment' }, 'new-arrivals': { title: 'Nieuw Binnen', description: 'De nieuwste sneakers, net toegevoegd' }, 'price-drops': { title: 'Prijsdalingen', description: 'Sneakers die recent in prijs zijn gedaald' }, 'bestsellers': { title: 'Bestsellers', description: 'De best verkochte sneakers' }, 'under-100': { title: 'Onder €100', description: 'Betaalbare sneakers onder de honderd euro' }, }; const { slug } = Astro.params; const spSize = Astro.cookies.get('sp_size')?.value || undefined; const meta = collectionMeta[slug!] || { title: slug, description: '' }; let collectionProducts: Sneaker[] = []; switch (slug) { case 'sale': case 'price-drops': collectionProducts = await getPriceDropsFromDB(24, spSize); break; case 'trending': case 'bestsellers': collectionProducts = await getProductsFromDB({ limit: 24, orderBy: 'popular', size: spSize }); break; case 'new-arrivals': collectionProducts = await getProductsFromDB({ limit: 24, orderBy: 'newest', size: spSize }); break; case 'under-100': collectionProducts = await getProductsFromDB({ limit: 24, orderBy: 'price_asc', size: spSize }); collectionProducts = collectionProducts.filter(s => s.lowestPrice < 100); break; default: collectionProducts = await getProductsFromDB({ limit: 24, size: spSize }); } ---